ホームに戻る
出典 :
Excelアドイン イベント処理 #C# - Qiita ThisAddIn クラスを使用して VSTO アドインをプログラムする - Visual Studio (Windows) | Microsoft Learn Office プロジェクト内のオブジェクトへのグローバル アクセス - Visual Studio (Windows) | Microsoft Learn Workbook インターフェイス (Microsoft.Office.Tools.Excel) | Microsoft Learn Worksheet インターフェイス (Microsoft.Office.Tools.Excel) | Microsoft Learn Application インターフェイス (Microsoft.Office.Interop.Excel) | Microsoft Learn Excel アドイン VSTO(VB.NET, C#) アクテイブなブック、シートの取得方法 選択中の範囲、セル取得方法 #VB.Net - Qiita
関連 :
[Excel]アドイン デリゲートとイベント
目次 :

アドインでExcelのイベントを処理する

ブックを開いた、ブック中でダブルクリックを行った、選択されているセル範囲が変更されたなど、Excel上で発生したイベントに対してアドインの特定の処理を関連付けたい場合は、
関連付けたい処理をイベントハンドラとして登録すればよい。
画像

手順

C#でのコード例を示す。
ThisAddin.cs (抜粋)
namespace ExcelAddIn1 { public partial class ThisAddIn { // (自動生成)アドイン開始時の処理 private void ThisAddIn_Startup(object sender, System.EventArgs e) { // Application の SheetBeforeDoubleClick (シートをダブルクリックした際に発生)イベントフックに // イベントハンドラとして DoSomething() を登録 this.Application.SheetBeforeDoubleClick += DoSomething; } // イベント発生時に実行したい処理(イベントハンドラ) private void DoSomething(object Sh, Excel.Range Target, ref bool Cancel) { string value = Convert.ToString(Target.Value); MessageBox.Show(value); } } }
ユーザ操作の多く(マウスクリックなど)は ThisAddIn.Application で受けることが可能であるが、特定のブック、またはシートでイベントを受けたい場合は以下のようにしてブックまたはシートを取得する。
// 現在開いているワークブック(Excelファイル)を取得 Workbook book = this.Application.ActiveWorkbook; // 現在のワークシートを取得 Worksheet sheet= this.Application.ActiveSheet;
画像

ThisAddIn クラス外からのアクセス

アドインの処理を記述する ThisAddIn クラスには、Globals 静的クラスを介してクラス外からのアクセスが可能である。
ThisAddIn は Globals のプロパティとして振舞う。
namespace ExcelAddIn1 { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { // this.Application.SheetBeforeDoubleClick += DoSomething; // と同様に振舞う Globals.ThisAddIn.Application.SheetBeforeDoubleClick += DoSomething; } } }